package com.joker.demo.core.domain.enums;


/**
 * @author : feixiang.li
 * @since : 2025-07-24 18:08
 */

public enum JobRequestEnum {

    /**
     * REGISTER:注册
     * HEARTBEAT:心跳
     * TASK_RESULT: 任务结果
     * REGISTER_RESPONSE:注册响应
     * HEARTBEAT_RESPONSE:心跳响应
     * EXECUTE_TASK :执行任务
     * CANCEL_TASK :取消任务
     */
    REGISTER("REGISTER"),
    REGISTER_RESPONSE("REGISTER_RESPONSE"),
    HEARTBEAT("HEARTBEAT"),
    HEARTBEAT_RESPONSE("HEARTBEAT_RESPONSE"),
    EXECUTE_TASK("EXECUTE_TASK"),


    /**
     * 执行任务响应
     */
    EXECUTE_TASK_RESPONSE("EXECUTE_TASK_RESPONSE"),

    /**
     * 任务结果
     */
    TASK_RESULT("TASK_RESULT"),
    /**
     * TASK_RESULT_RESPONSE:任务结果响应。表示已经接受到任务结果
     */
    TASK_RESULT_RESPONSE("TASK_RESULT_RESPONSE"),

    CANCEL_TASK("CANCEL_TASK"),
    /**
     * CANCEL_TASK_RESPONSE:取消任务响应
     */
    CANCEL_TASK_RESPONSE("CANCEL_TASK_RESPONSE"),

    /**
     * THREAD_POOL_MONITOR:线程池监控数据
     */
    THREAD_POOL_MONITOR("THREAD_POOL_MONITOR"),

    /**
     * THREAD_POOL_MONITOR_RESPONSE:线程池监控数据响应
     */
    THREAD_POOL_MONITOR_RESPONSE("THREAD_POOL_MONITOR_RESPONSE"),

    /**
     * ENVIRONMENT_MONITOR:环境监控数据
     */
    ENVIRONMENT_MONITOR("ENVIRONMENT_MONITOR"),

    /**
     * ENVIRONMENT_MONITOR_RESPONSE:环境监控数据响应
     */
    ENVIRONMENT_MONITOR_RESPONSE("ENVIRONMENT_MONITOR_RESPONSE"),

    ;
    private final String code;

    JobRequestEnum(String code) {
        this.code = code;
    }

    public String getCode() {
        return code;
    }


    public static JobRequestEnum getByCode(String code) {
        for (JobRequestEnum value : JobRequestEnum.values()) {
            if (value.code.equals(code)) {
                return value;
            }
        }
        return null;
    }
}
